import {
  cmode
} from '../env.js'
const request = (config) => {
  // 拼接完整的接口路径
  //使用本机 ipv4 地址
  // #ifdef H5
  // config.url = '/api' + config.url; //本地
  config.url = cmode + config.url; //打包
  // #endif
  // #ifndef H5
  // config.url = 'https://31pm114685.zicp.fun' + config.url;
  config.url = cmode + config.url;
  // #endif
  let token = ''; //token令牌
  //判断是都携带参数
  if (!config.data) {
    config.data = {};
  }
  // uni.getStorageSync('token') && (token = uni.getStorageSync('token')); //从本地缓存中获取token
  // console.log(token);
  // if (token) {
  //   if (config.method === 'GET') {
  //     config.header = {
  //       'content-type': 'application/json', //默认请求头，可不写
  //       'Authorization': `Bearer ${token}` //Bearer ，你请求数据需要的自定义请求头（令牌）
  //     };
  //   } else {
  //     config.header = {
  //       'content-type': 'application/json',
  //       'Authorization': `Bearer ${token}` //Bearer ，你请求数据需要的自定义请求头（令牌）
  //     };
  //   }
  // }
  let promise = new Promise(function(resolve, reject) {
    if (uni.getStorageSync('token')) {
      token = `Bearer ${uni.getStorageSync('token')}`
      config.header = {
        'Authorization': token
      };
    }
    uni.request(config).then(responses => {
      // 异常
      if (responses[0]) {
        reject({
          message: "网络超时"
        });
      } else {
        let response = responses[1].data; // 如果返回的结果是data.data的，嫌麻烦可以用这个，return res,这样只返回一个data
        if (response.code == 401) {
          uni.showToast({
            title: '登录已过期，请重新登录',
            icon: "none"
          })
          // setTimeout(() => {
          //   uni.redirectTo({
          //     url: '/subpkg/login/login'
          //   })
          // }, 2000)
          return uni.clearStorage('token');
        } else {
          resolve(response);
        }
      }
    }).catch(error => {
      reject(error);
    })
  })
  return promise;
};

export default request;
